package com.woniuxy.shiro_ini;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.env.BasicIniEnvironment;
import org.apache.shiro.env.Environment;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;

/**
 * @Author: 马宇航
 * @Todo: 配合shiro-auth.ini文件，来进行入门的认证开发
 * @DateTime: 22/04/13/0013 下午 3:30
 * @Component: 成都蜗牛学苑
 **/
public class TestIniLoginAuthc {
    public static void main(String[] args) {
        //1.读取配置文件,生成一个shiro的环境
        Environment environment = new BasicIniEnvironment("classpath:shiroConfig/shiro-auth.ini");
        //2.通过这个环境，生成默认的SecurityManager对象
        SecurityManager securityManager = environment.getSecurityManager();
        //3.shiro的工具类需要一个SecurityManager的环境
        SecurityUtils.setSecurityManager(securityManager);

    // -----------上面的代码，在后面项目中会通过配置文件搞定，不用记，类似Spring入门的ApplicationContext------------------------------------
        //4.有环境的工具包，将能获取到一个subject对象，然后我们就能使用subject对象来进行业务开发！
        Subject subject = SecurityUtils.getSubject();
        //5.有了主体用户以后，可以直接执行login来进行登录
        subject.login(new UsernamePasswordToken("mayun","11111"));
        //此处，subject主体执行login操作，底层会自动帮我去ini配置文件中匹配，能匹配上，则登录成功
        System.out.println("当前的"+subject.getPrincipal()+"用户，登录状态："+subject.isAuthenticated());
        if (subject.isAuthenticated()){
            //如果登录成功，则继续执行后续的业务
        }
    }
}
